package com.isczy.staservice.controller;

import cn.hutool.core.util.ArrayUtil;
import com.isczy.servicebase.exceptionHandler.MyException;
import com.isczy.staservice.service.StatisticsDailyService;
import com.isczy.utils.DataResult;
import com.isczy.utils.ResultCode;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.Map;

/**
 * <p>
 * 网站统计日数据 前端控制器
 * </p>
 *
 */
@RestController
@RequestMapping("/staservice/sta")
public class StatisticsDailyController {

    @Autowired
    private StatisticsDailyService staService;

    /***
     * ***************************************
     * 功能描述:统计某一天注册人数,生成统计数据
     * @param day
     * @return {@link DataResult}
     * @author create: TODO 人员:【ChangZiYang】类型:【新增方法】日期:【2021-01-23 9:58】
     * @author modify:
     */
    @PostMapping("registerCount/{day}")
    public DataResult registerCount(@PathVariable String day) {
        try{
            staService.registerCount(day);
            return DataResult.builder().successBuild();
        }catch (Exception e){
            throw MyException.builder()
                    .exception(e)
                    .code(ResultCode.ERROR)
                    .className(getClass().getName())
                    .methodName(Thread.currentThread().getStackTrace()[1].getMethodName())
                    .message("生成统计注册人数数据失败")
                    .params(day)
                    .build();
        }
    }

    /***
     * ***************************************
     * 功能描述:图表显示，返回两部分数据，日期json数组，数量json数组
     * @param type
     * @param begin
     * @param end
     * @return {@link DataResult}
     * @author create: TODO 人员:【ChangZiYang】类型:【新增方法】日期:【2021-01-23 9:59】
     * @author modify:
     */
    @GetMapping("showData/{type}/{begin}/{end}")
    public DataResult showData(@PathVariable String type,@PathVariable String begin,
                      @PathVariable String end) {
        try{
            return DataResult.builder()
                    .data(staService.getShowData(type,begin,end))
                    .successBuild();
        }catch (Exception e){
            throw MyException.builder()
                    .exception(e)
                    .code(ResultCode.ERROR)
                    .className(getClass().getName())
                    .methodName(Thread.currentThread().getStackTrace()[1].getMethodName())
                    .message("查询图表显示数据失败")
                    .params(ArrayUtil.toString(new String[]{type,begin,end}))
                    .build();
        }

    }
}

